Поскольку первое задание у нас на определение того, что можно считать покупкой (а основополагающей информацией здесь является оплата и статус заказа), начнем с загрузки данных о заказах.
На первый взгляд, проблем нет. Все строки заполнены, NaN значения в столбцах с датами объяснимы: заказ не был оплачен/не передан в доставку/не доставлен. Проверять на дубликаты таблицу целиком смысла нет, поскольку все значения по столбцам order_id и customer_id в ней уникальны:
Поэтому проверим на дубликаты без первых двух столбцов: (дубликатов нет)
Далее будем разбираться с датами и оплатами. Данных предоставлено миниальное количество, возможности задать дополнительные вопросы заказчику нет, поэтому дальнейшие действия будут основываться исключительно на собственных рассуждениях и опыте. Во-первых, посмотрим механизм оплаты. Что вообще означает колонка "время подтверждения оплаты заказа"? Вероятно, речь идет о банковской операции. Потому что более тысячи заказов (1359) у нас с подтверждением даты оплаты уже после передачи заказа в логистику, а по 61 из них оплата вообще прошла уже после доставки. Хотя статус у них всех 'доставлен'. Поэтому при интерпритации понятия "покупка" только на оплату здесь ориентироваться нельзя. Не будем просто фильтровать датафрейм по отсутствию оплаты, посмотрим на каждый статус заказа подробнее.
Если бы у нас был финансовый анализ, безусловно, без перехода права собственности мы бы операцию 'покупкой' не считали. Но в контексте данной задачи мы анализируем поведение покупателей. Я бы считала покупкой следующую цепочку "оформил заказ - оплатил". Есть вопрос по отмененным заказам. Но их очень мало, всего 0.6%, часть из них не оплачены (их логично убрать), по какой причине и кто отменил возможности узнать нет, поэтому заказы "создан-оплачен-отменен" оставим и будем считать покупкой.
Так можно посмотреть подробнее. Есть 625 отмененных заказов. Из них 484 оплачены, 75 дошли до логистики и 6 даже до покупателя. (Возвращены?? По какой причине? При наличии возможности нужно с этим разобраться) Из отмененных уберем только не оплаченные, остальные оставим.
Есть ряд вопросов к заказам со статусом 'доставлен'. 14 из них не оплачены, 2 не переданы в доставку и у 8 нет даты доставки. Поскольку дополнительно уточнить информацию не представляется возможным, будем считать это багом, а заказы удалим. Также есть 23 заказа с датой передачи на доставку позже, чем дата доставки покупателю. Все даты есть, заказ доставлен, убирать их не будем, но тем не менее со сбором данных явно есть проблемы.
Со статусом 'delivered' разобрались. Посмотрим на 'invoiced'. Абсолютно все 314 заказов оплачены. Ожидают передачи на доставку. 'shipped' не вызывает вопросов. Все заказы оплачены и переданы в логистику. 'processing' - оставляем полностью, все оплачено покупателями. С 'unavailable' сложнее. Судя по тому, что по всем из них подтверждена оплата, проблема с формированием произошла на стороне продавца. Вероятно, этот статус присваивается, если на складе не оказалось товара. Но тем не менее, покупатель оформил и заплатил. Я бы в контексте задачи считала покупкой. 'created' - просто созданные заказы. Не оплачены, в любой момент могут быть изменены. Не будем их учитывать. 'approved' - созданы и оплачены. Оставим.
Теперь необходимо присоединить к таблице данные о покупателях. Для этого загрузим нужную таблицу и посмотрим ее описательные характеристики.
Итого у нас получилось, что пользователей, совершивших покупку только один раз, 93040 человек, что составляет почти 94% покупателей. Это очень много, в пятом задании с Retention можно ожидать неутешительные результаты. Если речь не о продукте, который в основном покупается однократно (что вряд ли) или об очень специфическом товаре, магазину явно стоит поработать над возвращаемостью клиентов. Возможно, стоит как-то переработать продукт или пересмотреть ценовую политику.
Снова будем использовать датафрейм с заказами. Задание можно интепритировать по-разному. Сначала задача была решена первым способом. Но затем я решила предложить еще одно решение, более сложное. Этого можно было бы избежать, будь у нас возможность уточнить у заказчика, что конкретно нужно. Но поскольку ее у нас нет, будет моё виденье) Итак, первый вариант. Не доставленными в определенный месяц заказами будем считать те, у которых отсутствует дата доставки. Неважно, в процессе доставки они или вообще доставлены не будут. При анализе до этого были обнаружены 8 заказов со статусом "доставлен" и отсутствием даты доставки, их уберем, поскольку непонятно, доставлены они на самом деле или нет.
Отправной точкой будем считать обещанную дату доставки, поскольку при доставке товара мы ориентируемся именно на неё.
Итого в среднем в месяц мы имеем 113.73 не доставленных заказа. Из них: 0.076923 - только оплачены и еще не переданы в доставку, имеют статус "подтвержден". Будут доставлены позже. 23.807692 - отменены. Доставлены не будут. 0.192308 - только созданы и еще не оплачены. Будут доставлены позже. 12.076923 - также оплачены и не переданы в доставку, но имеют статус "выставлен счет". Будут доставлены позже. 11.576923 - в процессе сборки. Будут доставлены позже. 42.576923 - в процессе перевозки. Будут доставлены позже. 23.423077 - недоступны, мы предположили ранее, что это связано с проблемой комплектования заказа. Доставлены не будут.Второй вариант, на мой взгляд, более сложный. Мы посмотрим, во-первых, только те заказы, которые не находятся в процессе доставки/комплектования, а совершенно точно не доставлены в обещанный месяц и доставлены не будут. Это либо отмененные заказы, либо недоступные. Все остальные статусы являются промежуточными, их доставят и вполне возможно, что в указанный месяц. А также мы посмотрим заказы, которые в итоге доставили, но позже месяца обещанной даты доставки. И здесь удалось вычислить две причины: либо заказ уже в логистику был передан слишком поздно (позже обещанной даты), либо передан был вовремя, а вот доставлен до покупателя уже слишком поздно.
Итого по второму варианту мы видим такую картину. Цифры по отмененным и недоступным заказам аналогичны первому варианту решения. В среднем по 23 заказа в месяц у нас не доставляются потому что отменены или недоступны. Нужно разобрать в причинах отмен. Если отменяет магазин, то по какой причине? Если же это покупатель, тоже нужно узнать, в чем именно проблема и исправить. По недоступным заказам мы предположили, что их не удалось скомплектовать. Почему это происходит? Возможно, проблема со складским учетом. Товар числится, а по факту его нет. Нужно это исправить и не давать возможность покупателям заказывать отсутствующий товар. Неоднократные отмены заказов по этой причине могут снизить лояльность покупателей. Мою снижают) В среднем 5 заказов не доставляются в обещанный месяц, а позже по причине поздней передачи товара на доставку. Это довольно мало, но хотелось бы избавиться и от них. Возможно, проблема с товаром, сборкой, складским персоналом. Довольно много заказов, почти по 70 штук в месяц передаются на доставку вовремя, но едут к покупателю дольше, чем планировалось. Это проблемы со службой доставки, нужно разбираться, в чем дело.
За основу возьмем датафрейм только с теми заказами, которые мы посчитали "покупками" (из первого задания). Соединим его с таблицей с товарными позициями, для этого загрузим и посмотрим описательные статистки olist_order_items_dataset.
Объединим две таблицы. Таким образом, к каждому заказу из таблицы с товарными позициями у нас будет дата его оформления. Если даты нет, значит, этот заказ мы покупкой не посчитали, эти строки удалим.
В итоге мы получили таблицу, в которой по каждому товару можно увидеть день недели, в который его больше всего покупают. Если такой день не один (то есть максимальное число покупок было сразу в несколько дней), то все они также представлены. Представленные данные могут быть полезны для разных целей. Например, для формирования товарных запасов. Мы знаем, что в определенный день товар покупают особенно активно и лучше закупить его к этому дню.
Будем использовать наш датафрейм с теми операциями, которые мы посчитали покупками из первого задания (к нему уже присоединены данные о покупателях).
Эту информацию можно использовать, например, при анализе лояльности клиентов. Посмотреть динамику покупок и если для постоянных клиентов видно падение, возможно, имеет смысл предложить карту лояльности/персональные скидки.
Опять же будем использовать датафрейм из первого задания. От нас требуется проанализировать период с января по декабрь. Единственный год, который в данных представлен полностью, 2017. Поэтому будем смотреть данные с января 2017 по март 2018, чтобы иметь возможность оценить retention на третий месяц для покупателей, совершивших первую покупку в декабре 2017 года.
Когортой с самым высоким retention на третий месяц у нас является когорта июня 2017 года. Надо сказать, что в целом retention очень низкий. Настолько, что график по сути не показателен. Для всех когорт показатели одинаково низкие. В общем-то это было понятно еще по первому заданию, когда стало ясно, что более 90% покупателей совершили только одну покупку и больше не возвращались. Причем интересно, что обычно с каждым месяцем наблюдается снижение retention. Но в нашем случае этого нет. У нас нет никаких данных, что у нас за товар, но не очень похоже, что это что-то ценное, что люди, как правило, покупают очень редко, а, возможно даже, однократно. Поэтому похоже, что с продуктом проблемы. Его покупают и больше не возвращаются. Возможно, стоит пересмотреть ценовую политику. Работать над самим продуктом, над качеством, скоростью доставки, сервисом в целом. Можно ввести программы лояльности. Но для начала я б рекомендовала вступить в коммуникацию с клиентами, которые сделали покупку и больше не вернулись и узнать, что именно отталкивает их от дальнейших покупок.
Для начала займемся таблицей с товарными позициями по каждому заказу.
Итак, теперь у нас есть все необходимые показатели для RFM анализа. Далее необходимо их проранжировать. Будем использовать для этого квантили, каждый квантиль будет включать по 20% покупателей.
Очевидно, что, к сожалению, этот способ для ранжирования показателя частоты покупок мы использовать не можем. Что, в общем-то, было предсказуемо, поскольку почти 94% покупателей совершили только одну покупку. Посмотрим, что можно сделать.
Присвоим 1 балл тем, кто совершил одну покупку. 2 - 2 покупки. 3 - 3 или 4 покупки. 4 - 5 или 7 покупок. 5 - 9-11 покупок.Теперь напишем функции для присвоения покупателям рангов по каждому показателю.
Далее в зависимости от значения RFM разобьем наших покупателей на сегменты. Для начала изобразим схематично, как будем делить. Сверху - показатели Recency, слева - сумма Frequency и Monetary. Всего будет 8 сегментов.
Пройдемся по сегментам подробнее. Как правило, предлагается делить клиентов на сегменты только учитывая два показателя: R и F. Но исходя из особенности наших данных, это будет не совсем информативно. Почти все покупатели совершили только одну покупку. Мы, конечно, разделили оставшиеся 6% покупателей на ранги, но их очень мало. Поэтому будет логично использовать и показатель M тоже. Так мы хотя бы можем сравнивать покупателей с одной покупкой между собой. Потому что более платежеспособный клиент, хоть и совершивший одну покупку, но принесший компании больше выручки более ценен, чем тот, кто совершил лишь одну покупку на маленькую сумму. Итак, сегменты: - потерянные. Те, кто совершил последнюю покупку более 280 дней назад (9 месяцев). Вероятность их возвращения крайне низкая. - в зоне риска. Те, кто совершил последнюю покупку в интервале 207 - 279 дней назад и принес компании немного прибыли, поскольку либо покупок мало, либо их стоимость низкая. Не самые ценные клиенты. - те же, но с бОльшей прибылью для компании. Потому что чтобы набрать 6 баллов по M + F нужно, как минимум, совершить одну покупку на очень большую сумму. Либо несколько покупок. Ценные клиенты. - нуждаются во внимании. Совершили последнюю покупку в интервале 143 - 207 дней назад. Прибыли принесли немного, вероятно, совершили только одну покупку. Но времени прошло немного, можно попытаться их вернуть. - высокий потенциал. Те же, но с большой прибылью для компании. Высокая вероятность стать лояльными покупателями или даже чемпионами. Есть смысл предлагать им бонусы для того, чтобы удержать и побудить к новым покупкам. - новички. Совершили последнюю покупку относительно недавно, в период 143 дня назад и меньше. Но пока принесли совсем мало прибыли для компании, скорее всего это покупатели с одной недавней покупкой, то есть новые. - лояльные. Те же, но с бОльшими платежами. Вероятно, совершали покупки и до этого. Являются постоянными покупателями. Их нужно удерживать и пытаться перевести в сегмент 'чемпионы'. - чемпионы. Самые ценные клиенты. С покупками, совершенными недавно максимальной прибылью для компании.Теперь отнесем каждого покупателя к подходящему сегменту.
Посмотрим, как распределились покупатели по сегментам, из чего уже можно будет сделать выводы.
Итак, посмотрим. Очень много новичков. Это хорошо, вероятно, с привлечением клиентов все неплохо. Необходимо пытаться удерживать их и переводить в сегмент лояльных, побуждая к новым покупкам. Для этого можно использовать, например, промокоды на вторую покупку или бесплатную доставку нескольких первых заказов. К сожалению, очень большое количество потерянных и тех, кто в зоне риска. В сумме их около 27 тысяч человек, это почти четверть всех покупателей. Потерянных скорее всего вернуть уже не удастся. Можно попытаться вернуть тех, кто в зоне риска, но вероятность их возвращения низкая. Здесь можно сделать отсылку к пятому заданию, показатели retention у нас крайне низкие. Нужно работать над удержанием клиентов. Лояльных клиентов немало. Нужно их удерживать и пытаться перевести в сегмент чемпионов. Предлагать программы лояльности, различные бонусы и скидки. Затем идут те, кто нуждается во внимании. Это те, кто совершил покупку 3 - 7 меясцев назад, но прибыль принесли низкую. Вероятно, совершили покупку однократно и больше не вернулись. Времени прошло относительно немного, можно попытаться вернуть этих клиентов. Я бы советовала начать с опросов в любом виде (по почте, в приложении, телефонного) о том, что именно не устроило клиента. Сегменты покупателей с высоким потенциалом и тех, кого нельзя потерять, почти одинаковы по размеру. Это платежеспособные клиенты, давно не совершавшие покупок. Нужно работать над их возвращением выше указанными способами: опрос, затем извинения, если необходимо. Бонусные программы, скидки, промокоды. И последний сегмент - чемпионы. К сожалению, самый маленький. Это самые ценные клиенты. Сделали последнюю покупку совсем недавно, приносят много прибыли, покупки совершают неоднократно. Нужно пытаться их удерживать. Например, использовать индивидульные предложения.В каждом задании есть выводы. Но в целом можно сказать, что у компании наблюдаются проблемы. Просто огромное количество клиентов совершили одну покупку и больше не вернулись. Нужно выяснить, в чем проблема, и попытаться это исправить.